package com.gem.day17;

import java.lang.reflect.Array;

/**
 * 本类用来演示Java反射操作数组
 * 
 * @author easonsy
 * 2020年8月13日 下午1:32:51
 */
public class ReflectArray {
	public static void printArray(Object arr) {
		//反射获取数组长度
		int lenght = Array.getLength(arr);
		//遍历
		for (int i = 0; i < lenght; i++) {
			//反射通过下标获取数组元素
			System.out.println(Array.get(arr, i));
		}
	}

	public static void main(String[] args) {
		//反射创建数组方式
		int[] intArr = (int[]) Array.newInstance(int.class, 3);

		//创建多维数组
		/*int[][] intArr2 = (int[][]) Array.newInstance(int.class, 3, 3);
		System.out.println(Arrays.deepToString(intArr2));*/

		//反射通过下标设置数组元素
		Array.set(intArr, 0, 1);
		Array.set(intArr, 1, 2);
		Array.set(intArr, 2, 3);
		printArray(intArr);

		double[] doubleArr = { 1.0, 2.0, 3.0 };
		printArray(doubleArr);

		String[] strArr = { "AA", "BB", "CC" };
		printArray(strArr);
	}
}
